perm filename KI.SAI[KI,ALS]1 blob sn#091992 filedate 1974-03-21 generic text, type T, neo UTF8
00010	BEGIN "KI"
00020	DEFINE ⊂="COMMENT",CR="'15",LF="'12", CRLF="CR&LF",TB="'11";
00030	⊂ The master control program for the KI KA KU system. This program
00040	calls on various subroutines to perform the required functions of
00050	a simple speech communication system which can converse with a speaker
00060	after a minimum amount of adaptive learning in a very simple code
00070	involving the principle vowel sounds pronounced following the stop
00080	consonant "K". The hope is that the system can operate over the
00090	telephone in a reasonably noisy environment with a group of perhaps 100
00100	different speakers;
00110	
00120	REQUIRE "TRACK[KI,ALS]" LOAD_MODULE;
00130	EXTERNAL PROCEDURE TRACK;
00140	INTERNAL INTEGER SPX;
00150	INTERNAL INTEGER ARRAY SPOOR[0:6,0:20];
00160	INTEGER CHAN1,CHAN2,I,J,K,L,Z,EOF,BRCHR; BOOLEAN ER;
00170	STRING READ;
00180	INTEGER ARRAY ADSAY,ADHEAR[0:5];
00190	
00200	LABEL STARTP;
00210	
00220	
00230	PROCEDURE SAY(STRING UTTER);
00240	BEGIN "SAY"
00250	
00260	CLOSE(CHAN1) ; OPEN(CHAN1,"DSK",0,0,1,0,EOF,0);
00270	ENTER(CHAN1,"KIFILE.TMP",0);
00280	⊂ KIFILE to contain name of file to say;
00290	OUT(CHAN1,UTTER);
00300	CLOSE(CHAN1); RELEASE(CHAN1);
00310	  COMMENT Preset ESC 4 U ;
00320	  START_CODE MOVEI 0,ADSAY[0]; CALLI '400004; END;
00330	  ⊂ This starts program KISAY as a separate job;
00340	END "SAY";
00350	
00360	
00370	PROCEDURE HEAR;
00380	BEGIN "HEAR"
00390	
00400	  COMMENT Preset ESC ?? to start ADC;
00410	  START_CODE MOVEI 0,ADHEAR[0]; CALLI '400004; END;
00420	  ⊂ This starts program KIHEAR as a separate job;
00430	⊂ Program KIHEAR records an input utterance in file LISTEN.TMP;
00440	
00450	ER←1; I←0;
00460	  START_CODE MOVEI 0,4; '047000000031; END;
00470	  ⊂ Sleep for 4 seconds before trying;
00480	
00490	WHILE ER DO BEGIN "GETFIL"
00500	⊂  CLOSE(CHAN2); ⊂  OPEN(CHAN2,"DSK",'10,2,0,0,0,EOF);
00510	CLOSE(CHAN2); OPEN(CHAN2,"DSK",0,1,0,10,BRCHR,EOF);
00520	  LOOKUP(CHAN2,"LISTEN.TMP[KI,ALS]",ER);
00530	  I←I+1; IF I=10 THEN OUTSTR("PROGRAM HUNG ON LISTENING, WILL TRY SOME MORE");
00540	  IF I=20 THEN  DONE "GETFIL";
00550	  START_CODE MOVEI 0,2; '047000000031; END;
00560	  ⊂ Sleep for 2 seconds more;
00570	  END "GETFIL";
00580	outstr("The file LISTEN should be opened now"&crlf);
00590	IF I=20 THEN READ←"FAILED" ELSE
00600	READ←INPUT(CHAN2,1);
00610	CLOSE(CHAN2);
00620	OUTSTR("Reading LISTEN as "&READ&CRLF);
00630	END "HEAR";
00640	
00650	
00660	STRING PROCEDURE HEARIT(STRING EH);
00670	BEGIN "HEARIT"
00680	HEAR;
00690	IF EH="YES" THEN BEGIN "YES"
00700	
00710	RETURN("YES");
00720	END "YES"  ELSE BEGIN "NO"
00730	OUTSTR("In else branch for a NO answer"&CRLF);
00740	END "NO";
00750	END "HEARIT";
00760	
00770	PROCEDURE ASKNAM;
00780	BEGIN "ASK"
00790	
00800	OUTSTR("In procedure ASKNAM"&crlf);
00810	
00820	END "ASK";
00830	
00840	
00850	
00860	PROCEDURE TABLE;
00870	BEGIN
00880	
00890	INTEGER I,J;
00900	
00910	OUTSTR(CRLF&TB&"Track output"&crlf&TB&"Sample"&TB&"F1"&TB&"F2"&TB&"F3"
00920	  &TB&"A1"&TB&"A2"&TB&"A3"&CRLF);
00930	Z←2500%256;
00940	FOR J←0 STEP 1 UNTIL 20 DO BEGIN
00950	  IF SPOOR[1,J]=0 THEN DONE;
00960	  OUTSTR(CVS(J)&TB);
00970	  FOR I←0 STEP 1 UNTIL 6 DO OUTSTR(CVS(SPOOR[I,J])&TB);
00980	  OUTSTR(CRLF);
00990	  END;
01000	END;
     

00010	CHAN1←1; CHAN2←2; Z←2500%256;
00020	STDBRK(1);
00030	
00040	ADSAY[0]←CVSIX("DSK");
00050	ADSAY[1]←CVSIX("KISAY ");
00060	ADSAY[2]←CVSIX("DMP") LOR '4;
00070	ADSAY[3]←0;
00080	ADSAY[4]←CVSIX(" KIALS");
00090	ADSAY[5]←CVSIX(" KIALS");
00100	
00110	ADHEAR[0]←CVSIX("DSK");
00120	ADHEAR[1]←CVSIX("KIHEAR");
00130	ADHEAR[2]←CVSIX("DMP") LOR '4;
00140	ADHEAR[3]←0;
00150	ADHEAR[4]←CVSIX(" KIALS");
00160	ADHEAR[5]←CVSIX(" KIALS");
00170	
00180	
00190	STARTP:
00200	
00210	OUTSTR("Ready to say hello."&crlf);
00220	OUTSTR("Actually it will recite SEG1."&CRLF);
00230	⊂ SAY("HELLO");
00240	⊂ HELLO says Hello, This is KIKAKU. Have you talked to me before? ;
00250	⊂ OUTSTR("LISTEN now reports the word TEST in ascii"&crlf);
00260	⊂ REPEAT asks that a simple sentence be repeated;
00270	⊂ CALL(0,EXIT);
00280	 HEAR;
00290	 TRACK;
00300	TABLE; INCHWL;
00310	⊂ ASKNAM;
00320	
00330	
00340	END;